#include<iostream>
std::string sep="\r\n";
class TcpProtocol{
public:
    TcpProtocol(std::string s=""):_meg(s){}
    std::string Deserialization(){
        std::string sz(_meg.begin(),_meg.begin()+4);
        char p[4]= {sz[0],sz[1],sz[2],sz[3]};
        int len=*(int*)p;
        if(len<=_meg.size()-4){
            _meg.erase(0,4);
            sz=_meg.substr(0,len);
            auto it1=_meg.find(sep);
            if(it1!=std::string::npos){
                _meg.erase(0,it1+2);
            }
            it1=_meg.find(sep);
            sz=_meg.substr(0,it1);
            _meg.erase(0,it1+sep.size());
            return sz;
        }
        return "||";
    }
    void Serialize(std::string& s){
        int len=s.size();
        char* p=(char*)&len;
        std::string sz;
        for(int i=0;i<4;i++){
            sz.push_back(*(p+i));
            //std::cout<<*(p+i);
        }
        s=sz+sep+s+sep;
    }
    void add(const std::string& s){
        _meg+=s;
    }
    // std::string& GetBuffer(std::string& s){
        
    // }
private:
    std::string _meg;
};